/*This file is part of Sandbox.

Sandbox is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License.

Sandbox is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Sandbox.  If not, see <http://www.gnu.org/licenses/>.

For contact, see the About page of my blog: <http://mygeekyware.wordpress.com/>.*/

#include <iostream>
#include "controlador.h"
#include "definiciones.h"
#include <SDL/SDL.h>
#include <SDL/SDL_events.h>
#include "particula.h"
#include <math.h>

using namespace std;

void controlador::Plant(particula matriz[400][220], int x, int y) {
    //Doest it burn?
    if (matriz[x-1][y-1].tipo == MAGMA || matriz[x-1][y].tipo == MAGMA || matriz[x-1][y+1].tipo == MAGMA ||
            matriz[x][y-1].tipo == MAGMA || matriz[x][y+1].tipo == MAGMA || matriz[x+1][y-1].tipo == MAGMA ||
            matriz[x+1][y].tipo == MAGMA || matriz[x+1][y-1].tipo == MAGMA) {
        Plant2Fire(matriz,x,y);
    }
    if (matriz[x][y].contador != 0) {
        if (contadorgeneral%3 == 0) {
            if (matriz[x-1][y-1].tipo == 0) {
                matriz[x-1][y-1].tipo = PLANT;
                if (contadorgeneral%2 == 0)
                    matriz[x-1][y-1].contador = matriz[x][y].contador-1;
                else
                    matriz[x-1][y-1].contador = matriz[x][y].contador;
                matriz[x-1][y-1].peso = 20;
                matriz[x][y].contador = 0;
            }
            else if (matriz[x][y-1].tipo == 0) {
                matriz[x][y-1].tipo = PLANT;
                if (contadorgeneral%2 == 0)
                    matriz[x][y-1].contador = matriz[x][y].contador-1;
                else
                    matriz[x][y-1].contador = matriz[x][y].contador;
                matriz[x][y-1].peso = 20;
                matriz[x][y].contador = 0;
            }
            else if (matriz[x+1][y-1].tipo == 0) {
                matriz[x+1][y-1].tipo = PLANT;
                if (contadorgeneral%2 == 0)
                    matriz[x+1][y-1].contador = matriz[x][y].contador-1;
                else
                    matriz[x+1][y-1].contador = matriz[x][y].contador;
                matriz[x+1][y-1].peso = 20;
                matriz[x+1][y-1].update = false;
                matriz[x][y].contador = 0;
            }
            else
                matriz[x][y].contador--;
        }
        else if (contadorgeneral%3 == 1) {
            if (matriz[x+1][y-1].tipo == 0) {
                matriz[x+1][y-1].tipo = PLANT;
                if (contadorgeneral%2 == 0)
                    matriz[x+1][y-1].contador = matriz[x][y].contador-1;
                else
                    matriz[x+1][y-1].contador = matriz[x][y].contador;
                matriz[x+1][y-1].peso = 20;
                matriz[x+1][y-1].update = false;
                matriz[x][y].contador = 0;
            }
            else if (matriz[x][y-1].tipo == 0) {
                matriz[x][y-1].tipo = PLANT;
                if (contadorgeneral%2 == 0)
                    matriz[x][y-1].contador = matriz[x][y].contador-1;
                else
                    matriz[x][y-1].contador = matriz[x][y].contador;
                matriz[x][y-1].peso = 20;
                matriz[x][y].contador = 0;
            }
            else if (matriz[x-1][y-1].tipo == 0) {
                matriz[x-1][y-1].tipo = PLANT;
                if (contadorgeneral%2 == 0)
                    matriz[x-1][y-1].contador = matriz[x][y].contador-1;
                else
                    matriz[x-1][y-1].contador = matriz[x][y].contador;
                matriz[x-1][y-1].peso = 20;
                matriz[x][y].contador = 0;
            }
            else
                matriz[x][y].contador--;
        }
        else if (contadorgeneral%3 == 2) {
            if (contadorgeneral%2 == 0) {
                if (matriz[x][y-1].tipo == 0) {
                    matriz[x][y-1].tipo = PLANT;
                    if (contadorgeneral%2 == 0)
                        matriz[x][y-1].contador = matriz[x][y].contador-1;
                    else
                        matriz[x][y-1].contador = matriz[x][y].contador;
                    matriz[x][y-1].peso = 20;
                    matriz[x][y].contador = 0;
                }
                else if (matriz[x+1][y-1].tipo == 0) {
                    matriz[x+1][y-1].tipo = PLANT;
                    if (contadorgeneral%2 == 0)
                        matriz[x+1][y-1].contador = matriz[x][y].contador-1;
                    else
                        matriz[x+1][y-1].contador = matriz[x][y].contador;
                    matriz[x+1][y-1].peso = 20;
                    matriz[x+1][y-1].update = false;
                    matriz[x][y].contador = 0;
                }
                else if (matriz[x-1][y-1].tipo == 0) {
                    matriz[x-1][y-1].tipo = PLANT;
                    if (contadorgeneral%2 == 0)
                        matriz[x-1][y-1].contador = matriz[x][y].contador-1;
                    else
                        matriz[x-1][y-1].contador = matriz[x][y].contador;
                    matriz[x-1][y-1].peso = 20;
                    matriz[x][y].contador = 0;
                }
                else
                    matriz[x][y].contador--;
            }
            else {
                if (matriz[x][y-1].tipo == 0) {
                    matriz[x][y-1].tipo = PLANT;
                    if (contadorgeneral%2 == 0)
                        matriz[x][y-1].contador = matriz[x][y].contador-1;
                    else
                        matriz[x][y-1].contador = matriz[x][y].contador;
                    matriz[x][y-1].peso = 20;
                    matriz[x][y].contador = 0;
                }
                else if (matriz[x-1][y-1].tipo == 0) {
                    matriz[x-1][y-1].tipo = PLANT;
                    if (contadorgeneral%2 == 0)
                        matriz[x-1][y-1].contador = matriz[x][y].contador-1;
                    else
                        matriz[x-1][y-1].contador = matriz[x][y].contador;
                    matriz[x-1][y-1].peso = 20;
                    matriz[x][y].contador = 0;
                }
                else if (matriz[x+1][y-1].tipo == 0) {
                    matriz[x+1][y-1].tipo = PLANT;
                    if (contadorgeneral%2 == 0)
                        matriz[x+1][y-1].contador = matriz[x][y].contador-1;
                    else
                        matriz[x+1][y-1].contador = matriz[x][y].contador;
                    matriz[x+1][y-1].peso = 20;
                    matriz[x+1][y-1].update = false;
                    matriz[x][y].contador = 0;
                }
                else
                    matriz[x][y].contador--;
            }
        }
    }
}
